package com.itheima.bean;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;

@Data
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;

    /*
        1. 如果希望Jackson 在转换某一个属性的时候，转化成指定的类型，那么可以在属性上打注解
            1.1 @JsonSerialize 标记着怎么样做转化
            1.2 using, 就是用于指定使用哪一种序列化器。
     */
    //@JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    private String username;

    private String name;

    private String password;

    private String phone;

    private String sex;

    private String idNumber;

    private Integer status;

    // ================ 以下4个字段属于公共字段，在很多张表里面都有这几个属性。==================
    // 我们希望mybatisplus 能在添加  或者 更新的时候，为我们自动赋值这几个属性。
    // 1.  mybatisplus 需要知道在什么情况下给属性赋值， 需要在属性上面打注解，告诉mybatisplus.
    // 2.  mybatisplus 怎么知道要给这几个属性赋什么值呢？ 还需要提供一个类告诉它。

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;  // 添加的时候赋值

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime; // 添加和更新的时候赋值

    @TableField(fill = FieldFill.INSERT)
    private Long createUser; // 添加的时候赋值

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser; // 添加和更新的时候赋值

}
